package com.zretc.news.listener;

import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * Application Lifecycle Listener implementation class TestSessionListener
 *
 */
@WebListener
public class CalcSessionListener implements HttpSessionListener {


	/**
	 * sessionCreated sessioin创建，监听的就是session创建的事件 HttpSessionEvent 参数是一个类;
	 */
	public void sessionCreated(HttpSessionEvent se) {
		// 要将数据存在 jsp->application Servlet->ServletContext
		ServletContext application = se.getSession().getServletContext();
		// 先判断在application是否存在属性
		if (application.getAttribute("count") == null) {
			// 之前从来没有人访问过[本次首次],设置count的默认值为1
			application.setAttribute("count", 1);
		} else {
			// 之前有人访问过，这里需要转型,Integer后续要完成数学计算
			Integer obj = (Integer) application.getAttribute("count");
			// 将count的值设置为原来的值+1
			application.setAttribute("count", obj + 1);
		}
	}

	/**
	 * sessionDestroyed session被销毁的方法，监听的就是sessoin被销毁
	 */
	public void sessionDestroyed(HttpSessionEvent se) {
		// 要将数据存在 jsp->application Servlet->ServletContext
		ServletContext application = se.getSession().getServletContext();
		if (application.getAttribute("count") != null) {
			// 之前有人访问过，这里需要转型,Integer后续要完成数学计算
			Integer obj = (Integer) application.getAttribute("count");
			// 将count的值设置为原来的值-1
			application.setAttribute("count", obj - 1);
		}
	}

}
